package thread;

import java.util.Scanner;

public class Demo23 {
    // 只要添加 volatile（异变的） 就可以解决该问题
    private volatile static int count = 0;
    public static void main(String[] args) {
        Thread t1 = new Thread(() -> {
            while (count == 0) {
                // ... 内部不行写任何代码
            }
            // 为什么不打印？ 这就是内容可见性的问题
            // 因为执行时间是 IO >>> load(加载) >>> cmp(比较+跳转)
            // 所以如果没有IO, 又因为 load每次执行后都是同一个值， JVM 就会将它给优化掉 从而实现速度大幅提升
            // 于此同时 就导致内存可见性的问题啦
//            System.out.println("t1 end");
        });
        Thread t2 = new Thread(() -> {
            Scanner in = new Scanner(System.in);
            System.out.println("请输入:");
            count = in.nextInt();
            System.out.println("t2 end");
        });
        t1.start();
        t2.start();
    }
}
